<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class gadgetTags extends cpGadget
{
	
	
	
	
	
	/// @name Administration
	//@{
	public function adminInterface()
	{
		
		$rs = $this->core->site->getPages(array(
			'page_generateur'	=> 'tags',
			'page_statut'		=> CP_STATUT_ONLINE
		), CP_GET_RS);
		
		if($rs->isEmpty()) {
			return false;
		}
		
		$combo = array();
		while($rs->fetch()) {
			$combo[$rs->page_titre.' ('.$rs->page_url.')'] = $rs->page_id;
		}
		
		$data = unserialize($this->gadget_inst_data);
		$data = is_array($data) ? $data : array();
		
		$html = 
			'<p>'.
				'<label for="'.$this->champID('titre').'">'.__('Titre').'</label>'.
				form::field($this->champNomID('titre'), 30, 60, $this->gadget_inst_titre).
			'</p>'.
			'<p>'.
				'<label for="'.$this->champID('page_id').'">'.__('Lier à la page').'</label>'.
				form::combo($this->champNomID('page_id'), $combo, $data['page_id']).
			'</p>';
		
		return array(
			'html' => $html,
			'javascript' => ''
		);
		
	}
	
	
	public static function adminPeutEtreAjoute(&$message)
	{
		
		global $core;
		
		# Vérifier si le site possède une page de recherche
		$rs = $core->site->getPages(array(
			'page_generateur'	=> 'tags',
			'page_statut'		=> CP_STATUT_ONLINE
		), CP_GET_COMPTEUR);
		
		if($rs->f(0) == 0)
		{
			$message = __('Vous devez ajouter une page de tags à votre site avant d\'insérer un gadget de recherche.');
			return false;
		}
		
		return true;
		
	}
	

	public function preparerInstData($data)
	{
	
		if(empty($data['page_id'])) {
			throw new cpErreur(__('Donnée invalude'),  null, 301);
		}
		
		if(empty($data['titre'])) {
			throw new cpErreur(__('Vous devez indiquer un titre.'), $this->champID('titre'), 101);
		}
		
		$rs = $this->core->site->getPages(array('page_id' => $data['page_id'], 'page_generateur' => 'tags'), CP_GET_COMPTEUR);
		
		if($rs->f(0) == 0) {
			throw new cpErreur(__('La page sélectionnée a été supprimée.').' '.__('Si possible, sélectionnez une autre page de dans la liste.').' '.__('Sinon, vous devez créer une nouvelle page de tags avant d\'insérer ce gadget.'), $this->champID('page_id'), 103);
		}
		
		return serialize(array('page_id' => (integer) $data['page_id']));
		
	}
	//@}
	
	
	
	
	
	/// @name Public
	//@{
	
	
	protected $data;
	protected $url_page_tags;
	protected $tags;
	
	
	public function verifierAffichage($_ctx)
	{
		
		if(!parent::verifierAffichage($_ctx)) {
			return false;
		}
		
		# URL de la page de tags
		$this->data = unserialize($this->gadget_inst_data);
		$rs = $this->core->site->getPages(array('page_id' => $this->data['page_id'], 'page_statut' => CP_STATUT_ONLINE, 'page_generateur' => 'tags'), CP_GET_RS);
		
		if($rs->isEmpty()) {
			return false;
		}
		
		$this->url_page_tags = CP_URL_PUBLIQUE_RELATIVE.$rs->page_url;
		unset($rs);
		
		# Tags
		$this->tags = $this->core->site->getTags(array(
			'page_enligne' => true,
			'page_langue' => $_ctx->page->page_langue,
			'nb' => true,
			'order' => 'nb DESC',
			'limit' => 25
		));
		
		if($this->tags->isEmpty()) {
			return false;
		}
		
		return true;
		
	}
	
	
	public function public_contenu()
	{
		
		$tags = $this->tags->toStatic();
		$tags->sort('tag_texte', 'ASC');
		
		$max = 1;
		while($tags->fetch()) {
			if($tags->nb > $max) {
				$max = (integer) $tags->nb;
			}
		}
		
		$html =
		'<ul class="tags-liste-gadget">';
				
		while($tags->fetch())
		{
					
			$utilisation = ceil(($tags->nb / $max)*10);
			$html.=
			'<li class="tag_'.$utilisation.'">'.
				'<a href="'.$this->url_page_tags.','.rawurlencode($tags->tag_texte).'">'.
					html::escapeHTML($tags->tag_texte).
				'</a>'.
			'</li> ';
		}
				
		$html.=
		'</ul>';
		
		return $html;
		
	}
	//@}

	
}

?>